
package com.c.cojbackendquestionservice.manager;


import com.c.cojbackendquestionservice.manager.impl.DeepSeek;
import com.c.cojbackendquestionservice.manager.impl.DouBao;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 你遇到的问题是由于从直接调用 AiManager 改为使用工厂模式后，Spring 的依赖注入机制失效导致的 deepSeekClient 为空。
 * 工厂模式创建对象绕过Spring容器：
 *      你使用 AiMangerFactory.newInstance() 直接 new 对象
 *      这种方式创建的对象不受Spring管理，因此 @Resource 注解的依赖注入不会生效
 * 依赖注入失效：
 *       DeepSeek 类中的 @Resource private LkeapClient deepSeekClient 需要Spring容器来注入
 *      通过工厂直接 new 的对象，Spring不会处理它的依赖注入
 *
 *简单来说，工厂模式直接new的话，会使得deepSeek里面的@Resource private LkeapClient deepSeekClient;直接被跳过不会被注入到bean中，
 * 所以new后的对象里面使用了@Resource的话就会导致注入失败，所以工厂模式里面也要使用@Resource。
 *
 * 解决方法:将工厂模式改为Spring管理的Bean，添加@Component，引入他们的bean，就是配置的bean
 *
 */
@Component
public class AiMangerFactory {

    @Resource
    private DeepSeek deepSeek;

    @Resource
    private DouBao douBao;


    public AiModel newInstance(String model) {
        switch (model) {
            case "DeepSeek":
                return deepSeek;
            case  "Doubao":
                return douBao;
            default:
                return deepSeek;
        }
    }

}

